#include <func.h>

int print_dir(char *path, int width)
{
    DIR *pdir;
    pdir = opendir(path);
    ERROR_CHECK(pdir, NULL, "opendir");

    struct dirent *p;
    char buf[1024];
    while (p = readdir(pdir))
    {
        if (!strcmp(p->d_name, ".") || !strcmp(p->d_name, ".."))
        {
            continue;
        }

        printf("%*s%s\n", width, "", p->d_name);
        
        if (p->d_type == 4) // 文件夹
        {
            memset(buf, 0, sizeof(buf));
            sprintf(buf, "%s%s%s", path, "/", p->d_name); // 拼接文件夹路径
            print_dir(buf, width + 4);
        }
    }
}

int main(int argc, char* argv[])
{
    ARGS_CHECK(argc, 2);
    print_dir(argv[1], 0);
    return 0;
}
